public class code2 {
//    整数转罗马数字
public String intToRoman(int num) {
    // 根据题目中的罗马数字的特性，我们可以得出
    // 罗马数字的表示，是需要将最大的符号向前进行排列
    // 所以也就可以有一个思路：
    // 将 num 从罗马数字所能表示的最大数开始递减，只要能够相减为正，则此时将当前罗马数字进行记录
    // 知道 num 减少为 0 即可

    // 所以，要做到 数字 和对应的 字符串符号 匹配，就需要定义出两个相同长度的数组
    // 同一个下标下存放对应的相关数据

    // 这里符号的规则和题目中描述的 罗马数字的减法规则有关
    String[] symbol = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
    int[] val = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};

    // 使用 StringBuffer 构造出后续需要返回的字符串
    StringBuffer re = new StringBuffer();
    // 使用 for 循环，让当前的 num 数据在其中和 val 值进行循环递减
    for(int i = 0; i < val.length; i++) {
        // 获取到 val 中的第 i 个元素
        int value = val[i];
        while(num >= value) {
            // 只要当前的 num 大于 value 的值，此时就说明符合当前下标下的罗马数字，此时直接构造字符串
            num -= value;
            re.append(symbol[i]);
        }
        // 只要当 num 被减少为 0，则此时直接跳出循环即可
        if(num == 0) {
            break;
        }
    }
    // 完成循环后返回构造好的 re 字符串
    return re.toString();
}
}
